import Scaner from "./Scaner"
/**
 * 将模板字符串转化成数组形式的模板
 * @param template 模板字符串
 * @returns 
 */
export default function (template: string): Array<[string, string]> {
    // 创建一个字符串扫描对象
    const scaner = new Scaner(template);
    // 定义一个承接数组 
    let tokens = [];
    // 定义一个截取字符串的word
    let word;
    // 没有走到字符串末端就一直遍历
    while (!scaner.endTemplate()) {
        // 扫描{{字符
        word = scaner.scanUntil("{{");
        // 当返回字符串不为空时
        if (word != '') {
            // 判断结尾串是否存在#
            tokens.push(['text', word])
        }
        // 跳跃{{字符
        scaner.scanSkip("{{");
        // 扫描}}字符
        word = scaner.scanUntil("}}");
        // 当word不为空时
        if (word != '') {
            // 此时需要判断当前截取的字符串是否含有#或/
            // 当含有#或/需另外做处理
            if (word.indexOf('#') == 0) {
                tokens.push(['#', word.substring(1)])
            } else if (word.indexOf("/") == 0) {
                tokens.push(["/", word.substring(1)])
            } else {
                tokens.push(['name', word]);
            }
        }
        // 跳跃}}字符
        scaner.scanSkip("}}");
    }
    return tokens;
}
